package city.spring.modules.cardinfo.repository;

import city.spring.modules.cardinfo.entity.CardNumberEntity;
import city.spring.modules.cardinfo.vo.CardNumberEntityVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 存储库：
 *
 * @author panxm
 * @date 2020-05-19 10:34:16
 */
@Repository
public interface CardNumberRepository extends BaseMapper<CardNumberEntity> {
    /**
     * 通过卡号查找一卡通
     *
     * @return
     */
    CardNumberEntity getCardNumber(@Param("memberCard") String memberCard);

    /**
     * 获取最大值的会员编号
     *
     * @return
     */
    Object getMaxnum();

    /**
     * 分页获取卡片信息
     *
     * @param page    分页对象
     * @param wrapper 查询对象
     * @return 卡片信息
     */
    IPage<CardNumberEntityVO> listPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    /**
     * 分页获取老人卡片信息
     *
     * @param page    分页对象
     * @param wrapper 查询对象
     * @return 卡片信息
     */
    IPage<CardNumberEntityVO> oldListPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    /**
     * 人类型：预存余额小于0的记录
     *
     * @param page    分页对象
     * @param wrapper 查询对象
     * @return 卡片信息
     */
    IPage<CardNumberEntityVO> staffListPage(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);

    /**
     * 根据人员id找对应的卡片信息记录
     */
    CardNumberEntityVO getByPersonId(String personId);

    /**
     * 老人的卡片信息列表
     *
     * @param page
     * @param wrapper
     * @return
     */
    IPage<CardNumberEntityVO> oldcardInfo(Page<? extends CardNumberEntity> page, @Param(Constants.WRAPPER) Wrapper<? extends CardNumberEntity> wrapper);
}
